#ifndef SPRITE_H
#define SPRITE_H

#include <SDL/SDL.h>
#include <string>
#include <vector>

using namespace std;


/*
    Esse namespace engloba funcoes para gerenciar as Sprites
    As sprites sao carregadas e guardadas num map.
*/

namespace Sprite {

    class Imagem {
        public:
            int h; //(height) Altura da imagem
            int w; //(weight) Largura da imagem
            std::string arquivo; // caminho para o arquivo .bmp
            SDL_Surface *surface; // uma superficie com o sprite desenhado
            std::vector<SDL_Rect> frames; //retangulos que determinam os frames desta imagem
            
            //Construtor
            Imagem(string a, int b, int c, std::vector<SDL_Rect> f) {
                w = b;
                h = c;
                arquivo = a;
                surface = SDL_LoadBMP(a.c_str());
                frames = f;
            }
            
            //Destrutor
            ~Imagem() {
                SDL_FreeSurface(surface);
                delete(&frames);
            }
    };
    
	void Carregar(std::string key, std::string arquivo, int w, int h, std::vector<SDL_Rect> frames);
    Imagem* Get(std::string chave);
    void __Descarregar(Sprite::Imagem *sprite);
  	void Descarregar(std::string chave);
}



#endif
